home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / infosrvr / dev / scott / WWW / NextStep / Implementation / HTStyle.h < prev    next >
Text File  |  1993-02-01  |  3KB  |  83 lines

  1. /*    Style Definition for Hypertext                HTStyle.h
  2. **    ==============================
  3. **
  4. **    Styles allow the translation between a logical property of a piece of
  5. **    text and its physical representation.
  6. **
  7. **    A StyleSheet is a collection of styles, defining the
  8. **    translation necessary to represent a document.
  9. **    It is a linked list of styles.
  10. */
  11.  
  12. #import <appkit/appkit.h>
  13.  
  14. #ifndef HTSTYLE_H
  15. #define HTSTYLE_H
  16.  
  17. #define STYLE_NAME_LENGTH    80
  18.  
  19. typedef enum _SGML_tagtype {
  20.     NONE,            /* Style holds until further notice     */
  21.     ENDTAG,         /* Style holds until end tag </xxx>     */
  22.     LINE             /* Style holds until end of line (ugh!)    */
  23. } SGML_tagtype;
  24.      
  25. typedef NXCoord HTCoord;
  26.  
  27. typedef struct _HTStyle {
  28.     struct _HTStyle    *next;        /* Link for putting into stylesheet */
  29.     char *        name;        /* Style name */
  30.     char *        SGMLTag;    /* Tag name to start */
  31.     SGML_tagtype    SGMLType;    /* How to end it */
  32.  
  33.     id        font;        /* The character representation */
  34.     HTCoord        fontSize;    /* The size of font, not independent */
  35.     NXTextStyle    *paragraph;    /* Null means not defined */
  36. #ifdef V1
  37.     float        textColor;    /* Colour of text */
  38. #else
  39.     float        textGray;    /* Gray level of text */
  40.     int        textRGBColor;    /* Colour levels of text */
  41. #endif
  42.     HTCoord        spaceBefore;    /* Omissions from NXTextStyle */
  43.     HTCoord        spaceAfter;
  44.     void        *anchor;    /* Anchor id if any, else zero */
  45. } HTStyle;
  46.  
  47.  
  48. /*    Style functions:
  49. */
  50. extern HTStyle * HTStyleNew();
  51. extern HTStyle * HTStyleFree(HTStyle * self);
  52. extern HTStyle * HTStyleRead(HTStyle * self, NXStream * stream);
  53. extern HTStyle * HTStyleWrite(HTStyle * self, NXStream * stream);
  54. extern HTStyle * HTStyleApply(HTStyle * self, Text * text);
  55. extern HTStyle * HTStylePick(HTStyle * self, Text * text);
  56. typedef struct _HTStyleSheet {
  57.     char *        name;
  58.     HTStyle *    styles;
  59. } HTStyleSheet;
  60.  
  61.  
  62. /*    Stylesheet functions:
  63. */
  64. extern HTStyleSheet * HTStyleSheetNew();
  65. extern HTStyleSheet * HTStyleSheetFree(HTStyleSheet * self);
  66. extern HTStyle * HTStyleNamed(HTStyleSheet * self, const char * name);
  67. extern HTStyle * HTStyleForParagraph(HTStyleSheet * self,
  68.     NXTextStyle * paraStyle);
  69. extern HTStyle * HTStyleForRun(HTStyleSheet *self, NXRun *run);
  70. extern HTStyleSheet * HTStyleSheetAddStyle(HTStyleSheet * self,
  71.     HTStyle * style);
  72. extern HTStyleSheet * HTStyleSheetRemoveStyle(HTStyleSheet * self,
  73.     HTStyle * style);
  74. extern HTStyleSheet * HTStyleSheetRead(HTStyleSheet * self,
  75.                         NXStream * stream);
  76. extern HTStyleSheet * HTStyleSheetWrite(HTStyleSheet * self,
  77.                         NXStream * stream);
  78.  
  79. #define CLEAR_POINTER ((void *)-1)    /* Pointer value means "clear me" */
  80.  
  81. #endif /* HTSTYLE_H */
  82.  
  83.